package com.zhangshanfeng;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
### Collection集合的遍历【应用】

+ 迭代器介绍

  + 迭代器,集合的专用遍历方式
  + Iterator<E> iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到

+ Iterator中的常用方法

  ​	boolean hasNext(): 判断当前位置是否有元素可以被取出
  ​	E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置
 */
public class IteratorDemo01 {
    public static void main(String[] args) {
    /*
    Collection遍历
     */

        Collection<String> list = new ArrayList<>();
        list.add("woshi");
        list.add("wo");
        list.add("wwerwer");
        list.add("wossgfgsgs");
        list.add("woshrgsfhosifo");


        //迭代器1.for

        /*for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
            String next = iterator.next();
            System.out.println(next);
        }*/

        //2.while
        /*Iterator<String> iterator2 = list.iterator();
        while(iterator2.hasNext()){
            String next = iterator2.next();
            System.out.println(next);
        }*/

        //迭代器的删除
        /*
###  迭代器的常见问题

**并发修改异常**

在用迭代器进行遍历元素同时要删除元素时 必须使用迭代器提供删除方法 不能使用集合的删除方法，否则会报并发修改异常
         */
        //迭代器自带的remove指向谁删除谁

        Iterator<String> iterator2 = list.iterator();
        while(iterator2.hasNext()){
            String next = iterator2.next();
            if(next.length() >= 9){//比较内容的时候使用equals
                iterator2.remove();
            }
        }

        //普通删除

        //Collection多态不能使用子类所特有的









    }
}
